package ig.ejb.metrica.da.util;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.sql.Timestamp;

/**
 * The Data Transfer Object class.
 * Created 1/08/2006 05:34:20 PM
 * @author jsanchez
 */
public class RelacionmonedassubcuentasDTO implements java.io.Serializable {
    private Timestamp fechaCorte;
    private java.lang.String moneda;
    private Integer formato;
    private Integer unidad;
    private Integer subcuenta;
    private Double posicionactiva;
    private Double posicionpasiva;
                   
    
    private boolean dirty = false; //dirty flag
    
    public RelacionmonedassubcuentasDTO(){
    }
    
    public RelacionmonedassubcuentasDTO(Timestamp fechaCorte,String moneda, Integer formato, Integer unidad, Integer subcuenta, Double posicionactiva, Double posicionpasiva){
        this.moneda = moneda;
        this.formato = formato;
        this.unidad = unidad;
        this.subcuenta = subcuenta;
        this.posicionactiva = posicionactiva;
        this.posicionpasiva = posicionpasiva;
        this.fechaCorte=fechaCorte;
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }

    public void setFechaCorte(Timestamp fechaCorte) {
        this.fechaCorte = fechaCorte;
    }


    public Timestamp getFechaCorte() {
        return fechaCorte;
    }

    public java.lang.String getMoneda(){ return moneda; }
    public void setMoneda(java.lang.String moneda){
        this.moneda = moneda;
        setDirty();
    }
    
    public Integer getFormato(){ return formato; }
    public void setFormato(Integer formato){
        this.formato = formato;
        setDirty();
    }
    
    public Integer getUnidad(){ return unidad; }
    public void setUnidad(Integer unidad){
        this.unidad = unidad;
        setDirty();
    }
    
    public java.lang.Integer getSubcuenta(){ return subcuenta; }
    public void setSubcuenta(java.lang.Integer subcuenta){
        this.subcuenta = subcuenta;
        setDirty();
    }
    
    public Double getPosicionactiva(){ return posicionactiva; }
    public void setPosicionactiva(Double posicionactiva){
        this.posicionactiva = posicionactiva;
        setDirty();
    }
    
    public Double getPosicionpasiva(){ return posicionpasiva; }
    public void setPosicionpasiva(Double posicionpasiva){
        this.posicionpasiva = posicionpasiva;
        setDirty();
    }
    
    
    // populate DTO from Object
//    public void populate(Object o) {
//        Method[] methods = o.getClass().getMethods();
//        for (int i = 0; i < methods.length; i++) {
//            try{
//                String methodName = methods[i].getName();
//                if ((methodName.startsWith("get") ||
//                        methodName.startsWith("is"))
//                        && Modifier.isPublic(methods[i].getModifiers())
//                        && methods[i].getParameterTypes().length == 0
//                        && !methodName.equals("getClass")) {
//                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
//                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
//                            invoke(this, new Object[]{methods[i].invoke(o,null)});
//                }
//            }catch(IllegalAccessException ilE){
//                ilE.printStackTrace();
//            }catch(InvocationTargetException invE){
//                invE.printStackTrace();
//            }catch(NoSuchMethodException noE){
//                // Don't find setMethod for field
//            }
//        }
//    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "moneda: " + this.moneda + ", " +
                "formato: " + this.formato + ", " +
                "unidad: " + this.unidad + ", " +
                "subcuenta: " + this.subcuenta + ", " +
                "posicionactiva: " + this.posicionactiva + ", " +
                "posicionpasiva: " + this.posicionpasiva + "]";
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof ig.ejb.metrica.da.util.RelacionmonedassubcuentasDTO)) {
            return false;
        }
        ig.ejb.metrica.da.util.RelacionmonedassubcuentasDTO other = (ig.ejb.metrica.da.util.RelacionmonedassubcuentasDTO) otherOb;
        return (
                
                (moneda==null?other.moneda==null:moneda.equals(other.moneda))
                &&
                (formato==null?other.formato==null:formato.equals(other.formato))
                &&
                (unidad==null?other.unidad==null:unidad.equals(other.unidad))
                &&
                (subcuenta==null?other.subcuenta==null:subcuenta.equals(other.subcuenta))
                &&
                (posicionactiva==null?other.posicionactiva==null:posicionactiva.equals(other.posicionactiva))
                &&
                (posicionpasiva==null?other.posicionpasiva==null:posicionpasiva.equals(other.posicionpasiva))
                
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (
                
                (moneda==null?0:moneda.hashCode())
                ^
                (formato==null?0:formato.hashCode())
                ^
                (unidad==null?0:unidad.hashCode())
                ^
                (subcuenta==null?0:subcuenta.hashCode())
                ^
                (posicionactiva==null?0:posicionactiva.hashCode())
                ^
                (posicionpasiva==null?0:posicionpasiva.hashCode())
                
                );
    }
    
}
